import axios from 'axios'; // 请求
import QS from 'qs'; // 引入qs模块，用来序列化post类型的数据
import { Notify } from 'vant'; //错误时提示UI
import statusCode from './statusCode';
// 设置axios基础配置
var http = axios.create({
  baseURL:'api',
  timeout: 60000
})
// 请求响应返回拦截
http.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return Promise.resolve(response);
    } else {
      Notify({ type: 'danger', message: response.data.msg });
    }
  },
  error => {
    if (error.response.data.code) {
      switch (error.response.data.code) {
        case statusCode[error.response.data.code]:
          statusCode[error.response.data.code].msg
        break;
      }
      return Promise.reject(error.response);
    }
    Notify({ type: 'danger', message: response.data.msg });
  }
)
// axios请求配置
var service = {
  /**
   * get方法，对应get请求
   * @param {String} url [请求的url地址]
   * @param {Object} params [请求时携带的参数]
   */
  get(url, params) {
    return new Promise((resolve, reject) => {
      console.info(
        '请求url：'+url,
        '\n请求方式：GET',
        '\n请求参数：\n'+JSON.stringify(params)
      )
      http.get(url, {
        params: params
      }).then(res => {
        resolve(res.data);
      }).catch(err => {
        console.log('GET请求错误：',err)
        reject(err.data)
      })
    });
  },
  /** 
   * post方法，对应post请求 
   * @param {String} url [请求的url地址] 
   * @param {Object} params [请求时携带的参数] 
   */
  post(url, params) {
    return new Promise((resolve, reject) => {
      console.info(
        '请求url：'+url,
        '\n请求方式：POST',
        '\n请求参数：\n'+QS.stringify(params)
      )
      http.post(url, QS.stringify(params))
        .then(res => {
          resolve(res.data);
        })
        .catch(err => {
          console.log('POST请求错误：',err)
          reject(err.data)
        })
    });
  }
}
export default service;